package com.fa4j.system.account.service;

import com.fa4j.system.account.model.AccountPasswordType;
import com.fa4j.system.account.model.AccountPwdModifyCmd;
import com.fa4j.system.account.model.AccountPwdResetCmd;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * 账号密码 服务接口
 *
 * @since 2025-05-06 16:16:26
 */
public interface AccountPasswordService {


    /**
     * 重置密码
     *
     * @param cmd 参数
     */
    void reset(@Valid AccountPwdResetCmd cmd);

    /**
     * 修改密码
     *
     * @param cmd 参数
     */
    void modify(@Valid AccountPwdModifyCmd cmd);

    /**
     * 校验密码
     *
     * @param accountId 账号 ID
     * @param type      类型
     * @param pwd       密码
     */
    boolean validPwd(@NotNull Long accountId,
                     @NotNull AccountPasswordType type,
                     @NotBlank String pwd);

}
